package com.levy.contronller.javase.designModel.abstractFactory;

import com.levy.contronller.javase.designModel.abstractFactory.factory.AbstractFactory;
import com.levy.contronller.javase.designModel.abstractFactory.factory.AppleFactory;
import com.levy.contronller.javase.designModel.abstractFactory.factory.XiaoMiFactory;

/**
 * 抽象工厂模式
 * 理解抽象工厂模式的核心关键在于理解品牌家族的概念，
 * 简单工厂方法与工厂方法创建工厂的着眼点为某类具体的产品，某个工厂与某个产品对应，
 * 而抽象工厂某个工厂与产品的家族对应，
 * 这个工厂可以生产这个品牌家族的一系列产品。
 */
public class MainClass {

    public static void main(String[] args) {
        //使用苹果工厂生产苹果公司的系列产品
        AbstractFactory appleFactory = new AppleFactory();
        appleFactory.makeComputer().setOperationSystem();
        appleFactory.makeMobilePhoto().setOperationSystem();

        //使用小米工厂生产小米公司的系列产品
        AbstractFactory miFactory = new XiaoMiFactory();
        miFactory.makeComputer().setOperationSystem();
        miFactory.makeMobilePhoto().setOperationSystem();
    }

}
